asama構築 %asama ログインノードのNSFサーバはSSDにする! LANカードを差す BIOS変更せず USBさして電源を入れる 以降モニタ画面--- Grafical installを選択 言語設定,場所,キーボードはすべて日本を選択 ここで自動でネットワークの設定がされてホスト名を聞かれる ホスト名を入力する前に戻るボタンを押してネットワークの設定を手動でやる →管理ノードはそれでいいが,計算ノードは手動でやるとミラーサーバ選択のところでこける とりあえず外部ネットワークにつながったLANカードを差してネットワークの設定も自動でやり,あとで/etc/network/interfacesを編集する. やり方についてはこの先で説明する. どのLANカードを使うのか聞かれるのでLANカードを主に使う旨を設定 この時ドライバがないと言われたが,いいえ を選択してもいけた. ネットワークを手動で設定 管理ノード IPアドレス 133.87.45.14を使用 ネットマスク 255.255.255.0 ゲートウェイ 133.87.45.1 ネームアドレス 133.87.45.70 133.87.45.66 133.87.1.11 ホスト名 asama ドメイン名 ep.sci.hokudai.ac.jp 計算ノード IPアドレス 192.168.110.101 ネットマスク 255.255.255.0 ゲートウェイ 192.168.110.1 ネームアドレス 133.87.45.70 133.87.45.66 133.87.1.11 ホスト名 asama10X ドメイン名 ep.sci.hokudai.ac.jp アカウント設定 rootのパスワードを設定 自分の名前フルネームで入力 naoki ono ユーザにonoを追加 onoのパスワードを設定 ディスクのパーティショニング ガイド・ディスクの全体を使う を選択 OSを入れたいSSDを選択 すべてのファイルを1つのパーティションに を選択 自動的に以下のようなパーティションの提案がなされた > 1.0 MB 空き容量 > 1. 536.9 MB ESP > 2. 248.5 GB ext4 / > 3. 1.0 GB スワップ スワップ > 171.5 kB 空き容量 特に問題なさそうなので パーティショニングの終了とディスクへの書き込み を選択 確認画面が出るので はい を選択 パッケージマネージャの設定 日本 を選択 dennou-k.gfd-dennou.orgを選択 プロキシは設定しないので何も入力せずに次の画面へ行く debianパッケージ利用調査 どっちでもいい,今回はいいえを選択(週1で何か提出するらしい.不安要素はどんなに小さくてものぞいておくのがいいだろう) ソフトウェアを選択 SSHサーバ,標準ユーティリティ の二つにチェックボックスを入れる インストール完了 マザーボードのLANポートを設定する $ ip a でマザボのLANの名前を調べる /etc/network/interfaces に以下の文を付け足す %マザボのLANがenp5s0の場合 allow-hotplug enp5s0 iface enp5s0 inet static address 192.168.110.1 gateway 192.168.110.1 dns-nameservers 133.87.45.66 133.87.45.70 133.87.11 dns-search ep.sci.hokudai.ac.jp パッケージの追加 ・sudo #apt install sudo #visudo rootの下に ono ALL=(ALL:ALL) ALL を記入 ・vim #apt install vim $ vim .vimrc (vimを自分が使いやすいようにカスタマイズする) syntax on set backspace=indent,eol,start #set number(お好みで) ・rsync #apt install rsync ・ipforward 二つのネットワークカード(マザボのLANポート含む)の間でパケットを転送するのを可能にする (管理ノードのみ) #apt install iptables #apt install iptables-persistent (ipforwardの設定を再起動後も保存しておくためのもの) ip_forward の有効化 ip_forward の確認をする. #sysctl net.ipv4.ip_forward net.ipv4.tp_forward = 0 0 ということなので無効になっている.これを 1 にして有効としなければならない # vi /etc/sysctl.conf net.ipv4.ip_forward = 1 の行のコメントアウトを外す. iptables の設定 初期設定の確認 #iptables -t nat -nL (iptable nL は現在設定中のiptablesの設定情報を確認するためのコマンド.-t で設定したいテーブルを指定する.nat でnatテーブルを選択. ) Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination (チェーンとはパケットに対する処理内容を定義するグループのこと policy chain毎のルールのどれにもマッチしない場合に,パケットをどうするかを決める方針 target ルールに該当するパケットの処理方法 prot プロトコル source 送信元IPアドレス destinatior 送信先IPアドレス) https://dream.jp/vps/support/manual/mnl_security_04.html 参照 iptables の設定を変更する # iptables -t nat -A POSTROUTING -s 192.168.110.0/24 -j MASQUERADE 192.168.118.0/24からのパケットをマスカレード(パケットのソースIPをこのマシンのように見せかけて転送)する. http://transparent-to-radiation.blogspot.com/2014/01/iptablesmasquerade.html 参照 Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 192.168.110.0/24 0.0.0.0/0 のように表示される. 変更を保存 # iptables-save > /etc/iptables/rules.v4 busterではnftablesが基本的に用いられるているらしい,bullseyeはどうか知らないがおそらく同じだろうということでnftの方でも変更を保存 # nft list ruleset > /etc/nftables.conf ssh関連の設定 ローカルPCとasamaの公開鍵設定 ローカルPCで鍵のペアを作る ローカルPCでubuntuなりdebianを開き以下のコマンドを打つ $ ssh-copy-id -i /mnt/c/Users/ryuty/.ssh/id_rsa.pub ono@{サーバPCのIPアドレス} $ ssh-copy-id -i /mnt/c/Users/{自分のディレクトリ}/.ssh/id_rsa.pub {自分のアカウント名}@{サーバPCのIPアドレス} パスワード認証を無効にする $ sudo vim /etc/ssh/sshd_config PasswordAuthentication yes がコメントアウトされているのでそれを外し yes の部分をを no に書き直す sshサービスを再起動 $ sudo ystemctl restart sshd /etc/hosts の設定 asama,asama101等のホスト名で通信できるようにすべてのノードの/etc/hostsを編集する ログインノード 133.87.45.14 asama.ep.sci.hokudai.ac.jp asama 192.168.110.101 asama101.sci.hokudai.ac.jp asama101 192.168.110.102 asama102.sci.hokudai.ac.jp asama102 計算ノード 192.168.110.1 asama.ep.sci.hokudai.ac.jp asama 192.168.110.101 asama101.ep.sci.hokudai.ac.jp asama101 192.168.110.102 asama102.ep.sci.hokudai.ac.jp asama102 この時,192.168.110.1 asamaをファイルの一番上に持ってくること!! そうしないとOpenPBSで計算ノードを認識してくれなくなる 最終的に以下の設定にしたことを記しておく 192.168.110.1 asama 127.0.0.1 asama 127.0.0.1 localhost 192.168.110.101 asama101 192.168.110.102 asama102 133.87.45.14 asama.ep.sci.hokudai.ac.jp asama ログインノードと計算ノードの公開鍵設定 各計算ノードでrootでssh接続できるようにするために計算ノードの/etc/ssh/sshd_configに以下の文言を記載 PermitRootLogin yes (コメントアウトしてあるものを外して使うもよし) この変更を保存するために以下のコマンドを実行 ログインノードで以下を実行する $ sudo ssh-keygen いろいろと聞かれるがすべてenterを押す. $ ssh-copy-id root@asama10X X=1or2 ここでasama10X のroot のパスワードが聞かれるから入れる 完了 もし,root だけでなく一般のアカウントの状態でも公開鍵で接続するなら 上でやったことをsodo無しでやる. $ ssh-keygen $ ssh-copy-id ono@asama101 (ono@asamaのパスワードを入力) NFSサーバの導入と設定方法 そもそもNFSサーバとは => ネットワーク内のコンピュータに指定したディレクトリを公開するためのもの 今回でいえば,管理ノードからも計算ノードからも同一のディレクトリにアクセスできるようにするためのもの(WORK00等) @管理ノード インストール # apt install nfs-kernel-server /etc/exportに公開するディレクトリとその所属等の設定を書く # vim /etc/exports /work00 192.168.110.0/255.255.255.0(rw,sync,no_subtree_check,no_root_squash) /opt 192.168.110.0/255.255.255.0(rw,sync,no_subtree_check,no_root_squash) #1/22追記 /home 192.168.110.0/255.255.255.0(rw,async) # # /etc/init.d/nfs-kernel-server restart @計算ノード パッケージのインストール #apt install nfs-common /etc/fstabで公開されるディレクトリの所在等の情報を書きこむ #vim /etc/fstab 192.168.110.1:/home /home nfs defaults 0 0 192.168.110.1:/opt /opt nfs defaults 0 0 192.168.110.1:/work00 /work00 nfs defaults 0 2 マウントポイントの作成とマウント #mkdir work00 #mount -a dfコマンドなどで確認できる ジョブスケジューラのインストールと設定 OpenPBSインストールログを参照or http://www2.yukawa.kyoto-u.ac.jp/~koudai.sugimoto/dokuwiki/doku.php?id=%E8%87%AA%E4%BD%9C%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E8%A8%88%E7%AE%97%E6%A9%9F:pbs_pro%E3%81%AE%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A 参照 fortran OpenMPIのインストール wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz http://www2.yukawa.kyoto-u.ac.jp/~koudai.sugimoto/dokuwiki/doku.php?id=%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA:openmpi 参照 apt -d install ダウンロードだけでインストールしない apt uninstall アンインストール apt remove --purge インストール時に自動的に作られたディレクトリ(アンインストールした後は空ディレクトリ)を削除する dpkg -L apt installでインストールしたパッケージのインストール先のディレクトリを示すコマンド netcdf-cインストール 環境変数ここでつまずいた export CPPFLAGS="-I/work00/lib-mpi/zlib-1.2.11-mpi/include -I/work00/lib-mpi/hdf5-1.10.5-mpi/include -I/work00/openmpi1/include" 最後に -I/work00/openmpi1/include をつけなかったために hdf5.h のファイルが無いよというエラーが出続けた. make check でエラーが出るが無視してもmake installできた. netcdf-fortranのインストール make するとtype mismatch between actual argument at 1 and actual argument at 2というエラーが出てくる export FCFLAGS="-fallow-argument-mismatch" export FFLAGS="-fallow-argument-mismatch" として再び./configureをやると makeの時にエラーは出てこなくなる make checkでエラーが出てくるが,無視してもmake installできた.これで良いのだろうか https://github.com/Unidata/netcdf-fortran/issues/212 参照 環境変数の-fastや-fPICなどはFortranのコンパイルオプション? fPICは mpiexec (mpi有効化)のことか? gtool5のインストール 最初Cannot open module file ‘gtdata_generic.mod’ for reading at (1) と出てきてしまった. 一回gtool5のディレクトリを消して,再度tar zxvf gtool5XXXX.tgzして,やったところ成功した. ディレクトリの名前を変更(-mpiをつける)しなかったことも影響してる? <- それは無い make checkでエラーがでた,無視したが影響はないだろうか この時の.bashrcの設定は以下の通り MPIROOT=/usr/local/openmpi1 PATH=$MPIROOT/bin:$PATH LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH MANPATH=$MPIROOT/share/man:$MANPATH export MPIROOT PATH LD_LIBRARY_PATH MANPATH export CC="mpicc -fPIC" export CXX="mpicxx -fPIC" export FC="mpif90 " export F77="mpif90 " export F90="mpif90 " export CFLAGS="-O3 -cpp " export CXXFLAGS="-O3 -cpp" export FFLAGS="-O3 -fPIC -cpp" export FCFLAGS="-O3 -cpp " export F77FLAGS="-O3 -cpp" export F90FLAGS="-O3 -cpp" #追記-cppつけなくてもいけた make test で以下のエラーが出てくる """ 0/openmpi1/lib -L/work00/lib-mpi/netcdf-fortran-4.4.5-mpi/lib -lnetcdf -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -lnetcdff Error: ncdump: command not found. make[1]: *** [Makefile:134: test-mpi] エラー 1 rm histtest_mpi.o histget_mpi.o histauto_mpi.o histgetattr_mpi.o histauto2_mpi.o make[1]: ディレクトリ '/work00/t/gtool5-20160613-mpi/test' から出ます make: *** [Makefile:98: test-mpi] エラー 2 """ 2回目はなぜかすんなりいった ispackのインストール vimで Mkincludeするところで,-fastを書かなかった make installだとインストールしてくれない make しただけでインストールできていた spmlのインストール エラーが出てできない make -i (エラーを無視してコンパイル)で強引に構築→libディレクトリが作られない export FCFLAGS="-fallow-argument-mismatch" export FFLAGS="-fallow-argument-mismatch" をして./congigure をしたところできた. 何回かこれで試してダメだった気がするけど,,, この時の環境変数は以下の通り($ printenv) SHELL=/bin/bash FFLAGS=-w -fallow-argument-mismatch -O2 PWD=/work00/t/spml-0.8.0-mpi LOGNAME=ono XDG_SESSION_TYPE=tty MANPATH=/work00/openmpi1/share/man:/work00/openmpi1/share/man::/opt/pbs/share/man CXX=mpicxx -fPIC CXXFLAGS=-O3 MOTD_SHOWN=pam LDFLAGS=-L/work00/lib-mpi/zlib-1.2.11-mpi/lib -L/work00/lib-mpi/hdf5-1.10.5-mpi/lib -L/work00/lib-mpi/netcdf-c-4.6.3-mpi/lib -L/work00/lib-mpi/gtool5-20160613-mpi/lib HOME=/home/ono LANG=ja_JP.UTF-8 SSH_CONNECTION=133.87.45.154 51256 133.87.45.14 22 MPIROOT=/work00/openmpi1 FCFLAGS=-w -fallow-argument-mismatch -O2 XDG_SESSION_CLASS=user TERM=xterm-256color F77=mpif90 USER=ono F90=mpif90 SHLVL=1 F90FLAGS=-O3 XDG_SESSION_ID=137 LD_LIBRARY_PATH=/work00/openmpi1/lib:/work00/lib-mpi/zlib-1.2.11-mpi/lib:/work00/lib-mpi/hdf5-1.10.5-mpi/lib:/work00/lib-mpi/netcdf-c-4.6.3-mpi/lib:/work00/lib-mpi/netcdf-fortran-4.4.5-mpi/lib:/work00/lib-mpi/gtool5-20160613-mpi/lib:/work00/lib-mpi/ispack-1.0.4-mpi:/work00/lib-mpi/spml-0.8.0-mpi/lib XDG_RUNTIME_DIR=/run/user/1000 SSH_CLIENT=133.87.45.154 51256 22 SYSFFLAGS=-I/work00/openmpi1/include -I/work00/lib-mpi/zlib-1.2.11-mpi/include -I/work00/lib-mpi/hdf5-1.10.5-mpi/include -I/work00/lib-mpi/netcdf-c-4.6.3-mpi/include -I/work00/lib-mpi/netcdf-fortran-4.4.5-mpi/include FC=mpif90 F77FLAGS=-O3 PATH=/work00/openmpi1/bin:/work00/openmpi1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/pbs/bin CC=mpicc -fPIC CFLAGS=-O3 SSH_TTY=/dev/pts/0 OLDPWD=/work00/t/spml-0.8.0-mpi/bin _=/usr/bin/printenv NISサーバの導入 https://www.server-world.info/query?os=Debian_11&p=nis&f=2 参照 管理ノード-------------- # apt install nis # vim /etc/default/nis 11行目 NISSERVER=asama とする # vim /etc/ypserv.securenets 下2行をコメントアウトする(先頭に#をつける) その下に以下の文言を書き加える 255.255.255.0 192.168.110.0 # vim /etc/defaultdomain %このファイルは新規作成 kapibara % なんでいい.これはサーバ名をkapibaraとする場合 #systemctl restart rpcbind ypserv yppasswdd ypxfrd #systemctl enable rpcbind ypserv yppasswdd ypxfrd #/usr/lib/yp/ypinit -m ..next host to add: のところは "Ctrl + D"キーを押す y を押す 計算ノード--------------------- # apt install nis # vim /etc/yp.conf 以下の文言を足す domain kapibara server 192.168.110.1 #sudo vi /etc/nsswitch.conf passwd: nis files systemd group: nis files systemd shadow: nis files gshadow: files hosts: nis files dns のように"nis"を書き加える %1/25追記 hosts のところは nis を書き加えない,個別に設定しないとPBSで不備が出る # vim /etc/defaultdomain kapibara # vim /etc/pam.d/common-session 最終行に以下を追記(初回ログイン時にhome ディレクトリを作成するように設定) session optional pam_mkhomedir.so skel=/etc/skel umask=077 # systemctl restart rpcbind nscd ypbind # systemctl enable rpcbind ypbind -------- 使い方 @管理ノード $ sudo adduesr anaguma $ sudo make -C /var/yp エラー集 エマージェンシーモードになってしまった(通常ログインできず,rootでメンテナンスしてください,という表示が出てくるもの). →HDDのマウントに関して不備があるとこうなる.mount -a でエラーを見て /etc/fstab を編集すると治る pbsで計算ノードがunknown, downとなって認識してくれない 認識はしてくれるけどジョブ投入してもずっとQ(待機中)で動いてくれない →/etc/hostsが大いに関係しているっぽい 計算ノードの/etc/hostsの一番上に管理ノード(asama)の情報が来るようにしないと認識されない /etc/hostsをNISで共有するとうまく走ってくれないから,外す 管理ノード/etc/hostsの 127.0.0.1 asama を消すとPBSサーバがstopできなくなる.qmgrの編集も権限がないと言われる かといってこれを消さないとジョブが走ってくれない →一回書いた状態でSERVERをstopさせる hostsを編集し,消す(コメントアウトする) SERVERをstartさせる とするとうまく走る 127.0.0.1 asama の行があるとPBS_SCH(スケジューラ)が動いてくれない. hostがunknownであったりnot allowedであったりで動かなくなる. ↑この状態でも動かなくなった.何度かrebootしたら治ったけどもうよくわからない. ジョブ投入してちゃんと実行状態になってるけど一向に終わる気配がない →/work00/openmpi/bin/mpiexecのパスが/opt/pbs/bin/mpiexecより先に通ってるとこうなる. .bashrcでpbsのmpiexecのパスを先に書く ./etc/shadow ./etc/passwdディレクトリの名前を書き替えた. (NIS使わなくてもNSFでこれらのディレクトリをネットワークに公開すればいいんじゃないかと思って書き換え,その時にあろうことかsudo からexitしてしまった.) (ちなみに両ディレクトリはNFSで公開できなかった.重要なファイルだからだろうか) →superuserを抜けていたら終わり,OSの再インストール コンパイルできない →かなりの確率で環境変数の設定が原因 printenvで間違っていないかをよーく確認 あとFortranの年代による違いを無視する?(詳細は確認してない)設定 export FCFLAGS="-fallow-argument-mismatch" export FFLAGS="-fallow-argument-mismatch" これにかなり救われた. 最悪DCPAMのコンパイルに必要なファイルだけコンパイルできればいいので,make -i を使ってみるのもありかもしれない make -i を使ってビルドすると例えばlibファイルが無かったりする.けど必要なファイルが入っていれば問題ないかもしれない HDDが異常なほど遅い →/etc/fstab での/work00 の設定を変えると改善する UUID=a0af4a02-ee7b-4a05-85a3-3ec280bb2d26 /work00 ext4 defaults 0 2 の defaults の部分の設定を変えてしまうと遅くなることがある あと s をつけ忘れて default としてしまうと OS がエマージェンシーモードになってしまうから注意